diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index 40852fa..54e2401 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -303,22 +303,21 @@
 	/**
 	 * Drop-down Menu
 	 *
-	 * @param	mixed	$name
+	 * @param	mixed	$data
 	 * @param	mixed	$options
 	 * @param	mixed	$selected
 	 * @param	mixed	$extra
 	 * @return	string
 	 */
-	function form_dropdown($name = '', $options = array(), $selected = array(), $extra = '')
+	function form_dropdown($data = '', $options = array(), $selected = array(), $extra = '')
 	{
-		// If name is really an array then we'll call the function again using the array
-		if (is_array($name) && isset($name['name']))
+		$name = ! is_array($data) ? $data : '';
+		$defaults = array('name' => ( $name));
+            
+		if ( is_array($data) && isset($data['selected']))
 		{
-			isset($name['options']) OR $name['options'] = array();
-			isset($name['selected']) OR $name['selected'] = array();
-			isset($name['extra']) OR $name['extra'] = '';
-
-			return form_dropdown($name['name'], $name['options'], $name['selected'], $name['extra']);
+			$selected = $data['selected'];
+			unset($data['selected']); // selects don't have a selected attribute
 		}
 
 		is_array($selected) OR $selected = array($selected);
@@ -328,13 +327,17 @@
 		{
 			$selected = array($_POST[$name]);
 		}
-
-		$extra = _attributes_to_string($extra);
-
+            
+		if ( is_array($data) && isset($data['options']))
+		{
+			$options = $data['options'];
+			unset($data['options']); // selects don't use an options attribute
+		}
+            
 		$multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
-
-		$form = '<select name="'.$name.'"'.$extra.$multiple.">\n";
-
+ 
+		$form = '<select '._parse_form_attributes($data, $defaults).$extra.' '.$multiple.">\n";
+            
 		foreach ($options as $key => $val)
 		{
 			$key = (string) $key;
@@ -352,7 +355,7 @@
 				{
 					$sel = in_array($optgroup_key, $selected) ? ' selected="selected"' : '';
 					$form .= '<option value="'.form_prep($optgroup_key).'"'.$sel.'>'
-						.(string) $optgroup_val."</option>\n";
+                                            .(string) $optgroup_val."</option>\n";
 				}
 
 				$form .= "</optgroup>\n";
@@ -360,11 +363,11 @@
 			else
 			{
 				$form .= '<option value="'.form_prep($key).'"'
-					.(in_array($key, $selected) ? ' selected="selected"' : '').'>'
-					.(string) $val."</option>\n";
+                                    .(in_array($key, $selected) ? ' selected="selected"' : '').'>'
+                                    .(string) $val."</option>\n";
 			}
 		}
-
+            
 		return $form."</select>\n";
 	}
 }
